package com.advanced.counter;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

public class IncrementSingleExample {

  @SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
    Configuration conf = HBaseConfiguration.create();

    HTable table = new HTable(conf, "counters");

    //마지막 인자로 writeWAL을 설저할 수 있음 : 기본값으로 true
    long cnt1 = table.incrementColumnValue(Bytes.toBytes("20110101"),
      Bytes.toBytes("daily"), Bytes.toBytes("hits"), 1); //Counter를 1만큼 증가
    
    
    long cnt2 = table.incrementColumnValue(Bytes.toBytes("20110101"), // 두번째로 Counter를 1만큼 증가
      Bytes.toBytes("daily"), Bytes.toBytes("hits"), 1);

    long current = table.incrementColumnValue(Bytes.toBytes("20110101"), // Counter를 증가시키지 않고 현재갓을 가져옴
      Bytes.toBytes("daily"), Bytes.toBytes("hits"), 0);

    long cnt3 = table.incrementColumnValue(Bytes.toBytes("20110101"), // Counter를 1만큼 감소
      Bytes.toBytes("daily"), Bytes.toBytes("hits"), -1);
    // ^^ IncrementSingleExample
    System.out.println("cnt1: " + cnt1 + ", cnt2: " + cnt2 +
      ", current: " + current + ", cnt3: " + cnt3);
  }
}
